Laptop, handheld, and other portable computers or computing devices have increased in popularity as the devices become smaller in size and less expensive. Additionally, improved operating speed and processing power of portable computers has increased their popularity. Many portable computers are capable of storing multiple application programs, such as address books, games, calculators, and the like. The application programs can be permanently installed in the portable computer during manufacture (e.g., on Read-Only Memory (ROM)). Alternatively, one or more application programs may be installed by the user after purchasing the portable computer.
With the increased popularity and computing power of such devices, people are beginning to store data and applications using more than just a single computing device. Many people, for example, often use laptop computers in addition to their regular desktop computer. Other devices such as cellular telephones, Personal Digital Assistance (PDAs), Internet services, and the like are also used for storing data and applications.
Each of these computing devices may be part of a distributed computing system, wherein related information can be correlated and stored on multiple such devices. For example, an email client running in a cached mode is designed to keep a copy of a mailbox locally on the client. As such, if a user has a PDA and a desktop work computer, each device will have email items stored locally thereon. Ideally, the email information of the PDA should match the email information at the desktop work computer.
When the same or related information is stored in two places, it is possible for the data to change in one location and not in the other. This problem may be overcome through synchronization, which is an automated process that attempts to ensure that each device within the distributed system has the most current information or data. Synchronization, however, has its own set of problems. For example, when two devices sync with one another, typically such systems track changes on a per item basis, e.g., per email message, per contact, per appointment, etc. Accordingly, when two devices or computing systems attempt to sync, the entire item is downloaded regardless of how small the size of the property (e.g., flag, attachment, body, recipient, etc.) that was changed. Although for some high bandwidth transfer systems this full item tracking and syncing process posses little if any problems, with slower links, e.g., wireless connections, the downloading or streaming of an entire item can severally limit the transfer rate of data.
Consider for example an email message that includes, among other things, a follow-up flag property, recipient properties, a body property, and one or more attachments properties. If the follow-up flag is changed in color, the entire item must now be downloaded when syncing with another device. If the attachments and other data within the email are relatively large, this relatively small byte size change in the follow-up flag causes the entire item to be downloaded; thus producing large data transfer times over slow data links.
Even if a high bandwidth data link is used, it may still be undesirable to download an entire item. For example, when a customer pays for downloading items based on a number of bytes downloaded, if only a small amount of data has changed on an item, e.g., the follow-up flag noted above, the customer must still pay for the entire item to be downloaded. Such a waste of money can cause much frustration for users.
Some replication systems may be one solution to the above deficiencies of systems that track and sync devices on a per item basis. Although some replication systems provide for tracking changes on a property basis, these systems still have their own inherent problems. For example, the tracking of each individual property for a large number of items creates both high storage and high processing requirements. As such, these tracking and syncing systems are impractical for most uses.